package com.itfreer.xjmh;

import java.util.ArrayList;
import java.util.List;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import com.itfreer.file.FilePathPara;
import com.itfreer.file.LocalFilePathPara;
import com.itfreer.generate.GenerateFilePathPara;
import com.itfreer.jwt.JwtPara;
import com.itfreer.jwt.SystemParameter;
import com.itfreer.notice.NoticePara;
import com.itfreer.print.TemplateFilePara;
import com.itfreer.sso.base.services.JsonPathPara;
import com.itfreer.sso.client.SsoClientConfig;
import com.itfreer.utils.BaseHost;
import com.itfreer.utils.file.FileMeta;
import com.itfreer.utils.file.FilePara;

/**
 * 定义平台通用配置 将所有常需要改动的地方，全部集中在此配置文件
 */
@Configuration
public class ProConfiguration {

	//private String path = "/Volumes/work/share/data"; // 将文件放到nginx目录中
    private String filePath = "http://localhost/data/"; // 文件访问url
	private String serviceName = "http://localhost:4200";
	private String baseUrl = "http://localhost:81/";
	private String loginUrl = baseUrl + "static/login/index.html";

	private String path = "C:\\app\\pro1";
	// private String path = "C:\\app\\nginx-1.15.0\\html\\data"; // 将文件放到nginx目录中
	// private String filePath = "http://http://129.28.30.232//data/"; // 文件访问地址
	// private String serviceName = "http://129.28.30.232/xjmh";
	// private String baseUrl = "http://129.28.30.232:81/xjmh/";
	// private String loginUrl = baseUrl + "static/login/index.html";

	/**
	 * 获取后台服务基础路径
	 *
	 * @return
	 */
	@Bean
	public BaseHost baseHost() {
		BaseHost baseHost = new BaseHost();
		baseHost.setBaseUrl(baseUrl);
		return baseHost;
	}

	/**
	 * 当前系统参数
	 *
	 * @return
	 */
	@Bean(name = "systemParameter")
	public SystemParameter systemParameter() {
		SystemParameter config = new SystemParameter();
		config.setsId("xjmh");
		return config;
	}

	/**
	 * 文件下载地址 主要是解决文件服务器问题
	 *
	 * @return
	 */
	@Bean
	public FilePara filePara() {
		return new FilePara() {
			@Override
			public String getDownloadUrl(FileMeta file) {
				// 文件服务器形式
				return baseUrl + "file/jquery/download?bucket=" + file.getBucketName() + "&key=" + file.getKey()
						+ "&name=" + file.getName();
				// 原path形式
				// return filePath + "file/" + file.getBucketName() + "/" + file.getKey();
			}
		};
	}

	/**
	 * 通知配置
	 *
	 * @return
	 */
	@Bean
	public NoticePara noticePara() {
		NoticePara bean = new NoticePara();
		// 邮件发送参数
		// 发件人服务器smtp地址 格式一般为 smtp.****.com 例如qq邮箱的smtp.qq.com
		bean.setSmtphost("smtp.qq.com");
		// 发件人服务器smtp端口号 默认是25
		bean.setSmtpport("25");
		// 发件人邮箱地址
		bean.setFrommail("78587408@qq.com");
		// 发件人邮箱第三方登录授权码
		bean.setAuthcode("yvoxqsvtgvdhbgce");
		return bean;
	}

	/**
	 * 单点登录配置
	 *
	 * @return
	 */
	@Bean(name = "ssoClientConfig")
	public SsoClientConfig ssoClientConfig() {
		SsoClientConfig config = new SsoClientConfig();
		config.setServiceName(serviceName);
		config.setAllowAnyProxy(false);
		config.setLoginUrl(loginUrl);
		config.setLogoutRedirectUrl(loginUrl + "?service=" + serviceName);
		return config;
	}

	/**
	 * jwt票据参数
	 *
	 * @return
	 */
	@Bean
	public JwtPara jwtPara() {
		JwtPara bean = new JwtPara();
		List<String> urls = new ArrayList<>();
		urls.add(serviceName);
		urls.add("http://www.itfreer.com");
		bean.setSecurityUrls(urls);
		return bean;
	}

	/**
	 * 文件存储目录 如果文件服务器为目录存储形式
	 *
	 * @return
	 */
	@Bean
	public FilePathPara filePathPara() {
		FilePathPara para = new FilePathPara();
		para.setFilePath(path + "/file");
		return para;
	}

	/**
	 * 本地文件服务目录
	 *
	 * @return
	 */
	@Bean
	public LocalFilePathPara localFilePathPara() {
		LocalFilePathPara para = new LocalFilePathPara();
		para.setFilePath(path + "/file");
		return para;
	}

	/**
	 * 代码生成存储目录
	 *
	 * @return
	 */
	@Bean
	public GenerateFilePathPara generateFilePathPara() {
		GenerateFilePathPara para = new GenerateFilePathPara();
		para.setGenerateFilePath(path + "/generate");
		para.setTemplateFilePath(path + "/generatetemplate");
		return para;
	}

	/**
	 * 打印模板存储目录
	 *
	 * @return
	 */
	@Bean("printParameter")
	public TemplateFilePara printParameter() {
		TemplateFilePara para = new TemplateFilePara();
		para.setTemplatePath(path + "/print");
		return para;
	}

	/**
	 * 如果是单点登录服务端 注册服务的存储目录
	 *
	 * @return
	 */
	@Bean(name = "jsonPathPara")
	public JsonPathPara jsonPathPara() {
		JsonPathPara para = new JsonPathPara();
		para.setFilePath(path + "/service");
		return para;
	}
}
